package com.lft.sparsearray;

/**
 * 01. 稀疏数组
 */
public class SparseArray {
	public static void main(String[] args) {
		// 创建一个原始二维数组 11 * 11
		// 0：表示没有棋子；1：表示黑子；2：表示白子。
		int[][] originalArray = new int[11][11];
		originalArray[1][1] = 1;
		originalArray[2][2] = 2;
		originalArray[4][4] = 1;
		originalArray[5][5] = 2;
		originalArray[10][10] = 1;
		
		// 	打印输出
		// 	原始的二维数组:
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	1	0	0	0	0	0	0	0	0	0
		// 	0	0	2	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	1	0	0	0	0	0	0
		// 	0	0	0	0	0	2	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	0
		// 	0	0	0	0	0	0	0	0	0	0	1
		System.out.println("原始的二维数组:");
		for (int[] rows : originalArray) {
			for (int data : rows) {
				System.out.printf("%d\t", data);
			}
			System.out.println();
		}
		System.out.println();
		
		// 调用方法，将二维数组转换为稀疏数组。
		int[][] sparseArray = SparseArrayUtils.toSparseArray(originalArray);
		
		// 打印输出稀疏数组：
		System.out.println("等到的稀疏数组为：");
		for (int[] ints : sparseArray) {
			System.out.printf("%d\t%d\t%d\t\n", ints[0], ints[1], ints[2]);
		}
		System.out.println();
		
		// 调用方法将稀疏数组存入磁盘(文件);
		SparseArrayUtils.sparseArrayToIO(sparseArray, "G:\\WorkSpace\\Java\\sparseArray.data");
		System.out.println();
		
		// 调用方法从磁盘(文件)中读取稀疏数组;
		int[][] sparseArrayFromIo = SparseArrayUtils.sparseArrayFromIo("G:\\WorkSpace\\Java\\sparseArray.data");
		System.out.println();
		
		// 调用方法，将稀疏数组转换为二维数组。
		int[][] revertArray = SparseArrayUtils.toArray(sparseArrayFromIo);
		
		// 打印输出转换后的二维数组：
		System.out.println("还原后的二维数组:");
		for (int[] rows : revertArray) {
			for (int data : rows) {
				System.out.printf("%d\t", data);
			}
			System.out.println();
		}
	}
}
